import 'package:demo/routers/router_init.dart';
import 'package:demo/ui/display/display_widget.dart';
import 'package:demo/ui/display/single/Align.dart';
import 'package:demo/ui/display/single/AspectRatio.dart';
import 'package:demo/ui/display/single/Baseline.dart';
import 'package:demo/ui/display/single/Center.dart';
import 'package:demo/ui/display/single/ConstrainedBox.dart';
import 'package:demo/ui/display/single/Container.dart';
import 'package:demo/ui/display/single/CustomSingleChildLayout.dart';
import 'package:demo/ui/display/single/FittedBox.dart';
import 'package:demo/ui/display/single/FractionallySizedBox.dart';
import 'package:demo/ui/display/single/IntrinsicHeight.dart';
import 'package:demo/ui/display/single/IntrinsicWidth.dart';
import 'package:demo/ui/display/single/LimitedBox.dart';
import 'package:demo/ui/display/single/Offstage.dart';
import 'package:demo/ui/display/single/OverflowBox.dart';
import 'package:demo/ui/display/single/Padding.dart';
import 'package:demo/ui/display/single/SizedBox.dart';
import 'package:demo/ui/display/single/SizedOverflowBox.dart';
import 'package:demo/ui/display/single/Transform.dart';
import 'package:fluro/fluro.dart';

import 'multi/Column.dart';
import 'multi/CustomMultiChildLayout.dart';
import 'multi/Flow.dart';
import 'multi/GridView.dart';
import 'multi/IndexedStack.dart';
import 'multi/ListBody.dart';
import 'multi/ListView.dart';
import 'multi/Row.dart';
import 'multi/Stack.dart';
import 'multi/Table.dart';
import 'multi/Wrap.dart';

class DisplayRouter implements IRouterProvider {
  static String navigatorPage = "/display";
  static String navigatorContainerPage = "/Container";
  static String navigatorPaddingPage = "/Padding";
  static String navigatorCenterPage = "/Center";
  static String navigatorAlignPage = "/Align";
  static String navigatorFittedBoxPage = "/FittedBox";
  static String navigatorAspectRatioPage = "/AspectRatio";
  static String navigatorConstrainedBoxPage = "/ConstrainedBox";
  static String navigatorBaselinePage = "/Baseline";
  static String navigatorFractionallySizedBoxPage = "/FractionallySizedBox";
  static String navigatorIntrinsicHeightPage = "/IntrinsicHeight";
  static String navigatorIntrinsicWidthPage = "/IntrinsicWidth";
  static String navigatorLimitedBoxPage = "/LimitedBox";
  static String navigatorOffstagePage = "/Offstage";
  static String navigatorOverflowBoxPage = "/OverflowBox";
  static String navigatorSizedBoxPage = "/SizedBox";
  static String navigatorSizedOverflowBoxPage = "/SizedOverflowBox";
  static String navigatorTransformPage = "/Transform";
  static String navigatorCustomSingleChildLayoutPage = "/CustomSingleChildLayout";
  static String navigatorRowPage = "/Row";
  static String navigatorColumnPage = "/Column";
  static String navigatorStackPage = "/Stack";
  static String navigatorIndexedStackPage = "/IndexedStack";
  static String navigatorGridViewBoxPage = "/GridView";
  static String navigatorFlowPage = "/Flow";
  static String navigatorTablePage = "/Table";
  static String navigatorWrapPage = "/Wrap";
  static String navigatorListBodyPage = "/ListBody";
  static String navigatorListViewPage = "/ListView";
  static String navigatorCustomMultiChildLayoutPage = "/CustomMultiChildLayout";

  @override
  void initRouter(Router router) {
    router.define(navigatorPage, handler: Handler(handlerFunc: (_, params) => DisplayPage()));
    router.define(navigatorContainerPage, handler: Handler(handlerFunc: (_, params) => LYContainer()));
    router.define(navigatorPaddingPage, handler: Handler(handlerFunc: (_, params) => LYPadding()));
    router.define(navigatorCenterPage, handler: Handler(handlerFunc: (_, params) => LYCenter()));
    router.define(navigatorAlignPage, handler: Handler(handlerFunc: (_, params) => LYAlign()));
    router.define(navigatorFittedBoxPage, handler: Handler(handlerFunc: (_, params) => LYFittedBox()));
    router.define(navigatorAspectRatioPage, handler: Handler(handlerFunc: (_, params) => LYAspectRatio()));
    router.define(navigatorConstrainedBoxPage, handler: Handler(handlerFunc: (_, params) => LYConstrainedBox()));
    router.define(navigatorBaselinePage, handler: Handler(handlerFunc: (_, params) => LYBaseline()));
    router.define(navigatorFractionallySizedBoxPage, handler: Handler(handlerFunc: (_, params) => LYFractionallySizedBox()));
    router.define(navigatorIntrinsicHeightPage, handler: Handler(handlerFunc: (_, params) => LYIntrinsicHeight()));
    router.define(navigatorIntrinsicWidthPage, handler: Handler(handlerFunc: (_, params) => LYIntrinsicWidth()));
    router.define(navigatorLimitedBoxPage, handler: Handler(handlerFunc: (_, params) => LYLimitedBox()));
    router.define(navigatorOffstagePage, handler: Handler(handlerFunc: (_, params) => LYOffstage()));
    router.define(navigatorOverflowBoxPage, handler: Handler(handlerFunc: (_, params) => LYOverflowBox()));
    router.define(navigatorSizedBoxPage, handler: Handler(handlerFunc: (_, params) => LYSizedBox()));
    router.define(navigatorSizedOverflowBoxPage, handler: Handler(handlerFunc: (_, params) => LYSizedOverflowBox()));
    router.define(navigatorTransformPage, handler: Handler(handlerFunc: (_, params) => LYTransform()));
    router.define(navigatorCustomSingleChildLayoutPage, handler: Handler(handlerFunc: (_, params) => LYCustomSingleChildLayout()));
    router.define(navigatorRowPage, handler: Handler(handlerFunc: (_, params) => LYRow()));
    router.define(navigatorColumnPage, handler: Handler(handlerFunc: (_, params) => LYColumn()));
    router.define(navigatorStackPage, handler: Handler(handlerFunc: (_, params) => LYStack()));
    router.define(navigatorIndexedStackPage, handler: Handler(handlerFunc: (_, params) => LYIndexedStack()));
    router.define(navigatorGridViewBoxPage, handler: Handler(handlerFunc: (_, params) => LYGridView()));
    router.define(navigatorFlowPage, handler: Handler(handlerFunc: (_, params) => LYFlow()));
    router.define(navigatorTablePage, handler: Handler(handlerFunc: (_, params) => LYTable()));
    router.define(navigatorWrapPage, handler: Handler(handlerFunc: (_, params) => LYWrap()));
    router.define(navigatorListBodyPage, handler: Handler(handlerFunc: (_, params) => LYListBody()));
    router.define(navigatorListViewPage, handler: Handler(handlerFunc: (_, params) => LYListView()));
    router.define(navigatorCustomMultiChildLayoutPage, handler: Handler(handlerFunc: (_, params) => LYCustomMultiChildLayout()));
  }
}
